"""
1.高阶函数
高阶函数 是函数式编程的基础。它指的是可以接受函数作为参数或返回函数作为结果的函数。
2.闭包
在函数中再嵌套一个函数，并且引用外部函数的变量，这就是一个闭包了
闭包的定义规则：
	1.	嵌套函数。
	2.	嵌套函数引用了外部函数的变量。
	3.	外部函数返回嵌套函数。
"""
#高阶函数：
#1.函数作为参数
def greet(name):
    return f"hello,{name}!"
def execute(func, arg):
    return func(arg)
#使用高阶函数：函数作为参数
print(execute(greet, "alice"))

#2.函数作为返回值
def outer_function(text):
    def inner_function():
        return f"Inner says: {text}"
    return inner_function

# 获取返回的函数
result_func = outer_function("Hi")
print(result_func())  # 输出: Inner says: Hi




#闭包

def outer(x):
    def inner(y):
        return x+y
    return inner

"""
在outer函数内，又定义了一个inner函数，
并且inner函数又引用了外部函数outer的变量x，这就是一个闭包了。
在输出时，outer(6)(5),第一个括号传进去的值返回inner函数，
其实就是返回6 + y，所以再传第二个参数进去，就可以得到返回值，6 + 5。
"""
if __name__ == '__main__':
    print(outer(3)(4))